package com.sk.ccflower.lib.util.reflect;

import java.beans.PropertyDescriptor;
import java.util.Arrays;

/**
 * @author  Eunwook Lee
 */
public class NameArrayPropertyFilter implements PropertyFilter {

	private String[] propertyNames;

	public NameArrayPropertyFilter(String ... propertyNames) {
		this.propertyNames = propertyNames.clone();
		Arrays.sort(this.propertyNames);
	}
	
	/*
	 * implements kr.ideapool.web.lang.PropertyFilter
	 */

	public boolean accept(PropertyDescriptor pd) {
		return Arrays.binarySearch(propertyNames, pd.getName()) >= 0;
	}

	/*
	 * getters
	 */

	/**
	 * 허용된 프로퍼티명 목록. 이 메소드는 필터 조건의 변경을 막기 위해 원본이 아닌 사본( {@link Object#clone()} )을 리턴한다.
	 */
	public String[] getPropertyNames() {
		return propertyNames.clone();
	}

}
